package com.project.mapper;

import com.project.bean.ProgressBean;
import com.project.bean.ProjectBean;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface IProjectMapper {
    /**
     * 添加项目
     * @param proj 项目对象（包含项目名称、客户名称、项目资金、交付日期）
     */
//    @Insert("INSERT INTO t_project(pj_projName,pj_customer," +
//            "pj_money,pj_startDate,pj_endDate,pj_state)" +
//            "VALUES(#{name},#{customer},#{money}," +
//            "#{endDate})")
    public void add(ProjectBean proj);

    /**
     * 根据条件模糊动态分页查询。全默认的情况下为查询全部
     * 同时查询项目的参与人数（联表分组查询）
     * @param name 项目名称
     * @param state 项目状态
     * @param orderBy 排序规则
     * @return 符合条件的项目集合
     */
    public List<ProjectBean> findByItem(@Param("name") String name,
                                        @Param("state") String state,
                                        @Param("orderBy") String orderBy);


    /**
     * 根据项目id查询项目，同时查询该项目参与的进度信息，
     * 进度信息中需要查询员工姓名
     * @param id 项目id
     * @return 项目对象和参与员工姓名 //参与日期和完成日期(中间表)
     */
    public ProjectBean findById(Integer id);

    /**
     * 根据id查询该项目的进度信息，进度信息包含员工名称、参与日期和完成日期
     * @param id  项目id
     * @return  进度信息集合
     */
    public List<ProgressBean> findProgressByProjectId(Integer id);

    /**
     * 查询所有开发中项目，同时统计每个项目的参与人数
     * @return  未完成项目的集合
     */
    public List<ProjectBean> findNotFinlish();

}
